package com.sisbibvir.unmsm.controller;

import java.io.Serializable;
import java.util.ArrayList;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import org.primefaces.component.menuitem.MenuItem;
import org.primefaces.component.submenu.Submenu;
import org.primefaces.model.DefaultMenuModel;
import org.primefaces.model.MenuModel;

import com.sisbibvir.unmsm.dao.JPAUtil;
import com.sisbibvir.unmsm.dao.UsuarioDAO;
import com.sisbibvir.unmsm.entidades.Usuario;



@ManagedBean(name = "pc")
@SessionScoped
public class LoginController implements Serializable {
	boolean valor;
	public String usuario;
	public String password;
	Usuario user;
	int tipo_user;

	

	public String ValidaLogin() {
		
		String url="";
		JPAUtil jpau = new JPAUtil();
		UsuarioDAO udao = new UsuarioDAO(jpau.getEntityManager());
		Usuario usu = udao.read(usuario);
		boolean sesion = false;

		if (usu != null) {
			if (usu.getPassword().equals(password)) {
				user = usu;
				tipo_user = usu.getTipoUsuario().getId();
				sesion = true;
			} else {
				FacesContext.getCurrentInstance().addMessage(
						null,
						new FacesMessage("Error validando sesion",
								"Contraseña incorrecta"));
			}
		} else {
			FacesContext.getCurrentInstance().addMessage(
					null,
					new FacesMessage("Error validando sesion",
							"Contraseña o Usuario incorrectos"));
		}

		

		if (sesion) {
			Submenu submenu;
			MenuItem item;
			switch (usu.getTipoUsuario().getId()) {
			case 3:

				FacesContext.getCurrentInstance().addMessage(
						null,
						new FacesMessage("Sesion Iniciada",
								"Usted a iniciado sesion como alumno"));
				url = "/pages/Alumno/BusquedaTesis.xhtml";
				break;
			case 2:

				
				FacesContext.getCurrentInstance().addMessage(
						null,
						new FacesMessage("Sesion Iniciada",
								"Usted a iniciado sesion como docente"));
				url = "/pages/Asesor/VerPropuesta.xhtml";
				break;
			case 1:
				FacesContext.getCurrentInstance().addMessage(
						null,
						new FacesMessage("Sesion Iniciada",
								"Usted a iniciado sesion como administrador"));
				url = "/pages/Administracion/NuevoAsesor.xhtml";
				break;

			}
			
			valor = true;
			jpau.getEntityManager().close();
			jpau = null;
			System.gc();
			
			return url;

		} else {
			jpau.getEntityManager().close();
			jpau = null;
			System.gc();

			return "";

		}

	}

	public LoginController() {
		super();
		valor = false;

	}

	public boolean isValor() {
		return valor;
	}

	public void setValor(boolean valor) {
		this.valor = valor;
	}

	public void cambia() {
		if (valor) {
			valor = false;

		} else {
			valor = true;
		}
	}

	public String getUsuario() {
		return usuario;
	}

	public void setUsuario(String usuario) {
		this.usuario = usuario;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String logout() {
		FacesContext.getCurrentInstance().addMessage(null,
				new FacesMessage("Logout", "Usted ha cerrado sesion"));
		
		valor = false;
		user = null;
		tipo_user = 0;
		FacesContext.getCurrentInstance().getExternalContext()
	            .getSessionMap().remove("asignarpropuesta");
		return "/pages/Administracion/Login.xhtml";
	}

	public boolean isLoggedIn() {
		return user != null;
	}

	public Usuario getUser() {
		return user;
	}

	public void setUser(Usuario user) {
		this.user = user;
	}

	public int getTipo_user() {
		return tipo_user;
	}

	public void setTipo_user(int tipo_user) {
		this.tipo_user = tipo_user;
	}
	
	

}
